iT邦幫忙

2024 iThome 鐵人賽

DAY 5
1
DevOps

Grafana Zero to Hero系列 第 5

Grafana Zero to Hero - Visualization:What’s the pattern?

  • 分享至 

  • xImage
  •  

狀態變化

此小節的範例與練習於 Lab 的 03 - State Timeline, Status History Dashboard 中,可參考最下方 Lab 章節說明啟動。

除了數值的變化外,狀態的變化也是監控時常會使用的一種方式,State Time 與 Status History 能夠視覺化不同時間的狀態。常見的是把在不同區間的數值定義為不同狀態,只透過不同時間點的狀態來了解行為模式,而不是直接參考數值,例如 CPU 使用率大於 90% 為高、90%~50% 為中、50% 以下為低。另一種是收集到的資料本身就是一組可列舉的狀態清單,例如狀態是 on 或 off,也是可以用一樣的方式來視覺化。

除了數值變化外,狀態變化也是監控中的常用方式。State Timeline 與 Status History 可用來視覺化不同時間點的狀態,常見的應用是將不同數值範圍定義為狀態,例如:CPU 使用率大於 90% 為「高」,90%-50% 為「中」,50% 以下為「低」。也可以處理原始數據本身為列舉類型的狀態,如 on 或 off。

State Timeline and Status History

State Timeline

State Timeline 可將相同狀態的資料連接成區塊,更清晰地知道狀態切換的時間點與持續時間。State Timeline 的數據必須包含時間標記,數據可以是文字或數字,若為數字,則可透過 Threshold 設定區塊顏色。

State Timeline

State Timeline 需要一個時間作為區塊的起始點,區塊的結束點為下一個區塊的開始點或是遇到 Null 值。在 Lab 中我們使用 Test Data 的 CSV Content 作為範例資料,但因為 State Timeline 需要時間欄位,而 CSV Content 的時間欄位為 ISO 時間格式的字串,導致 Grafana 無法認得。這時候就會用到 Grafana 的另一個強大功能「Transformation」,其中提供了許多工具可以將 Data Source 查到的資料轉換成 Visualization 接受的格式,在這裡我們使用 Convert field type 將 Timestamps 欄位轉換成 Grafana 可識別的時間格式,其他更多的 Transformation 將在後續章節介紹。

CSV Content
State Timeline 接受的資料格式

Error Message
沒有偵測到時間欄位的錯誤訊息

設定 Convert field type 將 Timestamps 欄位轉換為時間格式後,State Timeline 即可正確顯示。

Convert field type

State Timeline 也可定義完整的起始與結束時間,以更精確地標記狀態。這裡也需要將 Start time 與 End time 欄位轉換成 Grafana 可識別的時間格式

CSV Content

Convert field type
設定 Convert field type 將 Start time 與 End time 欄位轉換成時間格式後,就可以正確顯示 State Timeline

在 Tooltip 中,會顯示區塊開始時間與持續時間。

Tooltip

若數據為數字,則可透過 Threshold 設定定義區塊顏色。

Threshold

若數據為文字,則需使用 Value Mapping 調整文字顏色,並可設定符合條件的顏色與文字顯示方式。

Mapping

Add Mapping

可設定的條件包括:

  1. Value:內容完全一致
  2. Range:數值在指定範圍內
  3. Regex:符合正規表達式
  4. Special:如 Null、NaN、Boolean、空字串等特殊值

Mapping Options

如果只單純設定 Value Mapping,Legend 只會顯示 Threshold 的顏色。若需顯示 Value Mapping 的內容,應在 Standard Option 中的 Color scheme 選擇 Shades of a color

Shades of a color

當數據點缺少時,會希望將狀態區塊連起來或是斷開,這時候就可以使用 Connect null values 與 Disconnect values 來設定。

  • Connect null values:會將臨近的兩個數據點連起來,可以設定 Always 連結,或是設定 Threshold,當兩個數據點的時間差小於 Threshold 時才連接。
  • Disconnect values:能將數據點斷開,當數據點之間的時間差大於 Threshold 時斷開。

Null Connection

Status History

Status History 與 State Timeline 類似,但不同的是,Status History 專注於每個數據點的當下狀態,不會連接相同的數據點。其數據必須包含時間標記,並且數據可以是文字或數字。

Status History

Status History 也需將時間欄位轉換為 Grafana 可識別的時間格式,跟前面 State Timeline 的設定方式一致。

CSV Content

Error Message
沒有偵測到時間欄位的錯誤訊息

設定 Convert field type 將 Timestamp 欄位轉換成時間格式後,即可正確顯示 Status History。

Convert field type

雖然 Status History 也可以使讀入兩個時間點代表起點跟終點,但在顯示上區塊的中心只會對準起點時間,所以在使用上並沒有什麼特別的好處。

Start time and End Time

Threshold 與 Value Mapping 的設定與 State Timeline 相同,可參考前面說明。

Lab 練習

了解 State Timeline 與 Status History 的常用設定後,現在可以嘗試將 03 - State Timeline, Status History Dashboard 中的 Practice Row 調整成右邊的樣子。

Practice

資料分布

此小節的範例與練習於 Lab 的 04 - Bar Chart, Pie Chart, Histogram, Heatmap Dashboard 中,可參考最下方 Lab 章節說明啟動。

選擇合適的圖表有助於快速理解資料,如果選得不適合頂多需要多花時間理解,但若是完全選錯就會讓人貽笑大方了。經典的錯誤就是折線圖的誤用,把不是連續變項的資料使用折線圖連起來,但其實應該使用 Bar Chart 長條圖來表達資料的分布狀態即可。

Wrong Chart
錯誤的圖表選擇,資料來源:數感實驗室

Grafana 提供了多種資料分布的視覺化方式,以下介紹 Bar Chart、Pie Chart、Histogram 與 Heatmap。

Distrinution

Bar Chart

Bar Chart 可同時顯示多組數據,與 Bar Gauge 類似,但能呈現分組後的資料。

Bar Chart

當顯示時間序列資料時,X 軸會變為時間軸。

Bar Chart with time series

Style
Bar Chart 可以調整 Orientation Horizontal 與 Stack 設定

Threshold
設定 Thresholds 後,Color scheme 選擇 From thresholds (by value) 可以讓 Bar 依照 Threshold 的值套用顏色

Pie Chart

Pie Chart 圓餅圖過去應該大家都用過不少,但其實 Pie Chart 在資料視覺化領域一直有許多爭議。主要原因在於,Pie Chart 使用角度來計算比例,但人類大腦的直接反應是根據面積來識別比例。

Grafana Documentary 中,Torkel 提到:「Pie Charts are a pretty horrible way to visualize data」。Grafana 甚至在其官方 Blog 發表了「Friends don't let friends abuse pie charts」一文,強調 Pie Chart 的缺陷,並建議改用 Bar Chart 或 Table 呈現資訊。

不過,經過多年討論後,Grafana 還是將 Pie Chart 加入內建的 Visualization 中。但他們多推薦透過設定將 Pie 中間挖洞,改成 Donut Chart。因為 Donut Chart 其實就只是 Bar Chart 的變體而已,可以視為把 Bar 堆疊繞成一個圓。

Pie Chart
Pie Chart 與 Donut Chart 跟 Bar Chart 的比較

Donut
Pie Chart 的 type 可以選擇要 Pie 或 Donut

Labels
Labels 可以設定是否在 Pie Chart 上顯示名稱、比例和數值

Histogram

Histogram 直方圖適用於數值的次數統計分布。只需提供原始資料,Histogram 會自動將數值分組並統計。

Histogram

Bucket Options 可設定以下選項:

  1. Bucket count:要分幾組 Bucket,預設為 30。
  2. Bucket size:每組 Bucket 的範圍大小,預設會根據 Bucket count 自動計算。

Heatmap

Heatmap 用於顯示數值隨時間變化的情況。數值的大小通過顏色深淺來表示。Grafana 的 Heatmap 有兩種模式,取決於資料是否已計算過。若資料已計算過,Heatmap 會直接根據數值顯示顏色;若尚未計算過,Heatmap 會根據數值進行統計後顯示。

Heatmap
上圖為直接顯示數值的 Heatmap,下圖為根據數值統計後呈現的 Heatmap

在設定中,可以選擇是否要 Calculate from data 來進行數值統計。如果選擇 Yes,Heatmap 會將時間序列資料根據時間分組,並對分組數值進行統計後顯示。

Calculate from data

Heatmap 提供了多種顏色 Scheme 供選擇。

Scheme

Tooltip 功能可以另外開啟額外資訊:

  1. Show color scale:顯示各區段的小圖示。
  2. Show histogram:顯示該時間區段的分布與所屬的 Bucket。

Tooltip

Lab 練習

了解 Bar Chart、Pie Chart、Histogram 與 Heatmap 的常用設定後,現在可以嘗試將 04 - Bar Chart, Pie Chart, Histogram, Heatmap Dashboard 中的 Practice Row 調整成右邊的樣子。

Practice

Lab

範例程式碼:https://github.com/blueswen/grafana-zero-to-hero/tree/main/03-dashboard

此 Lab 會建立

  1. cAdvisor:收集 Container 資料
  2. Node Exporter:收集運行的機器(Node)的資料
  3. Prometheus:採集 Application、cAdvisor、Node Exporter 的 Metrics
  4. Grafana:
    1. 操作各種預先建立的 Visualization 示範與練習 Dashboard
    2. 查詢與顯示 Prometheus 採集到的 Metrics

Quick Start

  1. 啟動所有服務

    docker-compose up -d
    
  2. 檢視服務

    1. Grafana: http://localhost:3000,登入帳號密碼為 admin/admin
      1. 點擊左上 Menu > Dashboards > Provision Dashboards 即可選擇預先建立的 Dashboard
  3. 關閉所有服務

    docker-compose down
    

上一篇
Grafana Zero to Hero - Visualization:Show me the number!
下一篇
Grafana Zero to Hero - Visualization:數據多樣性
系列文
Grafana Zero to Hero30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言